Skip to content

FTUX v2: Guided workflows with polished layout and accessibility#5

Open
dellis317 wants to merge 1169 commits into
mainfrom
feature/ftux-v2-guided-workflows
Open

FTUX v2: Guided workflows with polished layout and accessibility#5
dellis317 wants to merge 1169 commits into
mainfrom
feature/ftux-v2-guided-workflows

Conversation

@dellis317
Copy link
Copy Markdown
Owner

Summary

  • FTUX v2 guided workflows: 3-step Gather → Workshop → Build flow with 6 output types (Blog Post, Infographic, PRD, Timeline, Research Paper, Slide Deck), customizable dock/status bar/tips shell, onboarding tour, and hamburger tool menu
  • Layout & positioning fixes: Landing cards rewritten as compact 3-visible carousel with shuffle, Did You Know anchored to dock edge, step navigation cleared above dock with proper z-indexing
  • Animations: Directional slide transitions on step changes, snappier dock auto-hide (800ms), slide+fade on tip rotation
  • Accessibility: Keyboard navigation (arrow keys for carousel/tour, Escape to dismiss), aria-labels on all interactive elements, semantic nav/role/aria-current markup, aria-live regions
  • UX guardrails: Confirmation dialog before exiting mid-workflow, mobile fallback badge for hidden pinned items

Files changed (10)

  • FtuxLandingCards.tsx — Carousel rewrite with 6th card, shuffle, keyboard nav, ARIA
  • FtuxContentArea.tsx — Directional step slide animations, dock clearance
  • FtuxDidYouKnow.tsx — Dock-anchored positioning, slide+fade rotation
  • FtuxDock.tsx — Faster auto-hide, aria-labels on items
  • FtuxTourModal.tsx — Escape/arrow key handling, focus management, dialog role
  • FtuxStepNavigation.tsx — Nav landmark, z-index fix, contextual aria-labels
  • FtuxBreadcrumbStepper.tsx — Exit confirmation, slide-deck label, nav landmark
  • FtuxStatusBar.tsx — Mobile pinned items badge, aria-labels
  • FtuxHamburgerMenu.tsx — Hamburger trigger aria-label
  • ftux-shell-context.tsx — Added slide-deck OutputType

Test plan

  • Navigate to /ftux — landing cards show 3 at a time, arrows cycle with slide animation, left/right arrow keys work
  • Start a workflow — step transitions slide directionally, Back/Next visible above dock
  • Did You Know panel sits snug above dock, not floating disconnected
  • Tour modal responds to Escape (skip), arrow keys (navigate), Enter (advance)
  • Click X on breadcrumb stepper after advancing past Gather — confirmation dialog appears
  • Pin items to status bar, shrink to mobile width — "N pinned" badge shows
  • npm run check passes with zero errors

🤖 Generated with Claude Code

claude and others added 30 commits February 28, 2026 04:28
Remove the entire "locked" concept from folders and documents:
- Server: remove locked guards from rename/move/delete endpoints,
  stop setting locked=true on synced docs, simplify findOrCreateFolder
- StoragePanel: remove lock icons, enable drag/rename/delete on all items
- Workspace: remove lock icon from folder breadcrumbs
- ContextCapturePanel: remove lock icon from folder tree
- Schema: update comment on Chat to Context folder reference

All folders (Applications, Personas, Chat to Context) and their
documents are now regular user items that can be freely renamed,
moved, or deleted.

https://claude.ai/code/session_0113TYCpbjL9ydzG71utuk59
…FWjB

Remove locked folder/document system — all items are user-manageable
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: ce7b1623-6de4-4bf4-ae15-2af4b2322308
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 254cb815-af2d-42bf-9178-2257909742bc
Replit-Helium-Checkpoint-Created: true
- Rename "Transcript" tab to "Notes" across UI (appWorkspaceConfig, tab icons)
- Rewrite TranscriptPanel as note management panel with individual NoteEntry cards
- Each note has save-to-context, merge-to-document, and delete buttons
- Add "Save to Context" button on document ReadingPane toolbar
- Update Workspace state from single transcriptText string to NoteEntry[] array
- Voice transcripts now create individual note entries instead of appending text
- Fix ProvokeText container chrome bottom padding (pb-2 → pb-3 pt-1) to prevent
  actions/metrics overlapping the border in Objective layout
- Add CSS rules to keep AIQA QA overlay on top with max z-index
- Add new tracking events: note_saved_to_context, document_saved_to_context, etc.

https://claude.ai/code/session_01Hedsby8HwCwRbZiAmRwKKU
- Add effectiveObjective fallback so /api/write works when objective is empty
- Replace bare objective with effectiveObjective in all API calls (write,
  interview/question, interview/summary, generate-advice, discussion/ask,
  streaming/wireframe-analysis, chat/summarize, chat/stream, chat/save-session)
- Remove the New button, its handler, confirmation dialog, and AlertDialog imports

https://claude.ai/code/session_01FYT4U7DJck8qHcU5mNwJbq
…9CaN

Convert Transcript panel to Notes management with save-to-context
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: a8627a73-9ca1-4855-96d7-edc073a8103a
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: d1e318de-f3b8-429d-aac2-97284b423e3b
Replit-Helium-Checkpoint-Created: true
…ion-NBodc

Remove AlertDialog import and "New" button from Workspace
Cross-referenced all 104+ backend route definitions in server/routes.ts
against every API call in client/src/ to identify 23 endpoints with no
frontend callers, plus 11 dead replit_integration routes that are never
imported. Categorized findings with line references and recommendations.

https://claude.ai/code/session_01DMfrwF7RvaQtBFQkoqER16
- Add pinned quick-add input at top of Notes panel with border, background,
  mic and submit buttons for better visual delineation
- Revert ProvokeText container chrome padding change (pb-3 pt-1 → pb-2)
  to preserve consistent layout across all panels
- Remove showWordCount/showReadingTime overrides on Objective
  (all ProvokeText must have the same button set per ADR)
- Auto-scroll to latest note when new notes are added
- Empty state shows hint text without redundant add button

https://claude.ai/code/session_01Hedsby8HwCwRbZiAmRwKKU
…LAUDE.md

Notebook UI changes:
- Rename "Transcript" tab to "Notes" in NotebookRightPanel
- Add save-to-context-store button on each note card (save icon → green check)
- Improve "Add a note" input delineation with bordered input area + background
- Update all "Send to Transcript" / "Accept → Transcript" labels to "Notes"
  across ProvoThread, NotebookResearchChat, and TranscriptPanel
- Update toast messages and empty state text to use "notes" terminology

CLAUDE.md update (notebook refactor):
- Add NotebookWorkspace as primary orchestrator (3-panel layout)
- Document all 12 notebook/ components and bschart/ components
- Add new templates: gpt-to-context, bs-chart, query-editor
- Add Research Chat and User-to-User Messaging API endpoints
- Add routing table (/, /app/:templateId, /store, /admin, /pricing)
- Add database tables (connections, conversations, messages, chatPreferences)
- Update state management docs for context pinning and captured context
- Update workspace layout types to include research-chat and bs-chart

https://claude.ai/code/session_01Hedsby8HwCwRbZiAmRwKKU
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 44c7d436-5868-4396-9692-b2e68bf99bd8
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: de91d4bb-4509-45cc-bec2-00b09ad8fdd5
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 19e6dcfe-e742-4fda-a95f-88f212d5e8b5
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 30130edd-b3f0-48bc-9484-b3c9683c1318
Replit-Helium-Checkpoint-Created: true
The AIQA QA overlay disappears when clicked because Radix UI's
DismissableLayer (used by Dialog, Popover, DropdownMenu) listens for
pointerdown/mousedown events on the document. When a click on the AIQA
widget bubbles up, Radix treats it as an "outside click" and dismisses
any open overlay — which can interfere with the AIQA widget's own state.

Fix: Add a MutationObserver-based script that shields all AIQA-injected
DOM elements by stopping propagation of pointer/mouse/click/focus events
in the capture phase, preventing them from reaching Radix's global
listeners while still allowing AIQA's own event handlers to work normally.

https://claude.ai/code/session_01Hedsby8HwCwRbZiAmRwKKU
Pressing Enter on the delete document/folder modal now triggers the
delete action, matching the expected keyboard interaction pattern.

https://claude.ai/code/session_01E88QoBRE7XrPiXiciMwSCB
…9CaN

Fix AIQA widget disappearing on click by stopping event propagation
Move the "Add Notes" label inside the card as a proper header with
icon, voice recorder, and send button. Increase the textarea from
1 to 3 minimum rows for a more substantial input area.

https://claude.ai/code/session_01E88QoBRE7XrPiXiciMwSCB
…modal-oEZGJ

Redesign note input UI and improve delete dialog keyboard handling
…licate creation

- Drag-and-drop: folders and documents in Context Store are now draggable
  and can be nested into folders (up to 10+ levels deep). Dropping on empty
  space moves items to root. Backend cycle detection prevents invalid moves.
- Upload moved to Session Context: upload button is now in the Session Context
  header. Uploaded files are auto-pinned to the session for immediate use.
- Fix duplicate creation: guard create mutations with isPending check so rapid
  Enter presses no longer create multiple documents/folders.
- First-tier folders are fully left-aligned (0px indent at depth 0).
- Tree indentation scales gracefully to 10+ nesting levels.

https://claude.ai/code/session_01CaMDQqpQAAuhQCDzo1RKFF
…ers-QCkcz

Add drag-and-drop support and improve Context Sidebar UX
Add note explaining that npm install must run before npm run check or
npm run build, otherwise TypeScript reports false errors about missing
type definitions for node and vite/client.

https://claude.ai/code/session_01CaMDQqpQAAuhQCDzo1RKFF
…ers-QCkcz

Update CLAUDE.md: document npm install requirement before type checking
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 22918bb7-9ef2-4863-92c8-027e26235b3a
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: b9443e8e-e7d7-49d4-ae66-8d16aa0fb97d
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 055ddedc-3df6-4bc3-9455-f9dd4684487f
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 8c557c6e-683d-46c4-b4a4-9412733795e1
Replit-Helium-Checkpoint-Created: true
Switch objective ProvokeText from chrome="container" to chrome="inline"
to remove the heavy bordered card wrapper that was causing buttons to be
hidden. Reduce padding, icon sizes, and gap values. Remove the fixed
h-[20%] height constraint so the panel sizes naturally to its content
with minRows/maxRows on the textarea.

https://claude.ai/code/session_01AFq3zHzrNbe5xG2txP4SSj
Move the message count + Clear button header out of the ScrollArea
and into a fixed shrink-0 header above it. This keeps the Clear
action always visible regardless of scroll position.

https://claude.ai/code/session_01AFq3zHzrNbe5xG2txP4SSj
- Add 4 research focus modes: Explore, Verify, Gather, Analyze
- Rewrite buildResearchAssistantPrompt with source hierarchy, trust
  signals, freshness mandates, and chain-of-thought reasoning
- Add focus-specific prompt sections that steer assistant behavior
- Add focus mode selector pills in Research chat header
- Wire researchFocus through chatRequestSchema to /api/chat/stream

https://claude.ai/code/session_01AFq3zHzrNbe5xG2txP4SSj
- Add Save button that stores document + objective to Context Store
  (objective embedded as blockquote header in content)
- Add Evolve button that triggers /api/write with the selected smart
  button mode (Expand/Condense/Restructure/Clarify/Style)
- Wire smart button sub-options to call onEvolve with instruction type
- Thread onSaveToContext, onEvolve, isSaving, isEvolving props through
  NotebookCenterPanel to SplitDocumentEditor
- Update CLAUDE.md: always fix pre-existing TypeScript errors

https://claude.ai/code/session_01AFq3zHzrNbe5xG2txP4SSj
StanislavBG and others added 30 commits March 2, 2026 00:25
Fix recurring Drizzle migration noise from duplicate UNIQUE constraints
Add docType column (document, image, timeline, chart, note) to the
documents table and wire it through the full stack: Drizzle schema,
ensureTables, save/list API, and all client save paths. ContextSidebar
now shows type-specific icons with distinct colors — Image (violet),
Clock/timeline (amber), BarChart3/chart (blue), StickyNote/note (green),
FileText/document (default gray).

https://claude.ai/code/session_01AJKpY5SRV8z5tKA7Cn5abC
- Save to Context now persists timeline as a real document in the Context
  Store (via POST/PUT /api/documents) instead of just adding to ephemeral
  notes. Subsequent saves update the same document.

- Event dates now display dynamically based on granularity: year-only dates
  show just the year, month-precision shows "Jun 2024", day shows full date,
  and time-precision includes hours. Dates within a group header suppress
  redundant info (e.g. events in a "2024" group show "Jun 15" not
  "Jun 15, 2024").

- Auto-zoom picks the best zoom level (decades/years/months/days) based on
  the time span of events, triggered when events first load or after bulk
  imports (5+ new events).

https://claude.ai/code/session_01Md7X6uF47doGetoRBezSQ9
…9O3z

Fix timeline Save to Context and dynamic date display
…xt-N0P2h

Add document type icons to Context Store sidebar
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 5f00556b-8c23-4ce5-a281-d6ba30c78178
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 288c7509-a478-4200-9cf1-7e29f0893f92
Replit-Helium-Checkpoint-Created: true
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 6de65017-3ef4-48dc-981b-0d6fabc8ec1a
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 2404fadc-3e62-465e-bbba-2b7c19676717
Replit-Helium-Checkpoint-Created: true
Instruments fetch, script injection, DOM mutations, window.AIQA methods,
and button visibility to trace exactly why the overlay vanishes on click.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: ba59469f-a10d-4d61-b2af-acd15d0c98c1
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 2f2b686f-9b8d-4d6f-bf7b-8ad5a4cb3fb0
Replit-Helium-Checkpoint-Created: true
The overlay loads and initializes correctly but renders behind the app's
fixed/absolute elements (z-50). Force aiqa-overlay-root to max z-index.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Override overlay root to fixed position within viewport (right panel,
full height). Add computed style + bounding rect logging to debug.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1307f9d0-c5c7-4f04-9572-dec77eba62e6
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 65cf3f55-8387-425f-bac5-6ac528449cb3
Replit-Helium-Checkpoint-Created: true
Minimal CSS (z-index + red outline) to see where overlay renders.
Dumps full outerHTML, computed styles, bounding rects for root and
all children to pinpoint visibility issue.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: c6073ffb-0846-4bb0-a0e2-d1853f591b30
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 4062ee08-4de1-4333-896b-e62d6758f6d7
Replit-Helium-Checkpoint-Created: true
Overlay root was rendering as a tiny element in bottom-right corner.
Override to fixed center position, 460x80vh, with indigo border and
white background so it's unmissable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 20ddde18-c833-44fe-ab8e-a6fbbced00f0
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 661658e0-5961-40d2-82b9-6690326e7bc3
Replit-Helium-Checkpoint-Created: true
Remove forced CSS overrides (were breaking overlay rendering). Track
every child added/removed inside overlay-root, attribute changes, shadow
roots, iframe srcs, and script errors from overlay.js. Dumps full element
tree with computed styles at 2s and 5s after init.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 00a3cf43-3e91-42c1-aa48-686fdf8fc64a
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: c5d727cb-2aab-421b-81b7-8daf6c37b187
Replit-Helium-Checkpoint-Created: true
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 9f80349f-b9b8-476a-99cb-a2d156413a0e
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: cb989eb5-15fb-4528-8c8b-2d769bd3aa16
Replit-Helium-Checkpoint-Created: true
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Voice transcription now uses the browser's built-in Web Speech API as
the primary method (free, real-time, no API key needed). Server-side
transcription is only used when the browser lacks Web Speech support.

Also adds Critical Rules to CLAUDE.md:
- No OPENAI_API_KEY — use GEMINI_API_KEY
- Browser-first for all voice/media capture

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: afdfe735-5224-43d1-8a09-d3c21c74cbd2
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: b387d098-e666-4552-9e52-2a0e6a25bbe1
Replit-Helium-Checkpoint-Created: true
Replit-Commit-Author: Deployment
Replit-Commit-Session-Id: de733278-94fb-4417-ba7b-11f03c759b39
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: c19a434d-5df5-44ae-afb8-b57646980a10
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c2b10803-d37e-4344-a703-d35a86802e35/de733278-94fb-4417-ba7b-11f03c759b39/t2zuEkz
Replit-Commit-Deployment-Build-Id: 4cc1ac04-7a8c-454f-86c1-6f954feb1273
Replit-Helium-Checkpoint-Created: true
… PeerChat

- Enhance LlmCallPreview header to show Provider / Model Label / Tier
  instead of raw model ID (useActiveModelInfo hook fetches full model info)
- Wrap 7 remaining LLM buttons with LlmHoverButton for ADR compliance:
  InfographicStudio (Clean Summary, Artistic Summary),
  TimelineWorkspace (Discover Era), DraftQuestionsPanel (Tailor),
  InterviewTab (Start Interview, Summary, Podcast)
- Replace hardcoded bs-chatt.replit.app Video iframe with proper PeerChat
  integration (peerchat.app) using embed params, Clerk user name,
  Provocations branding, and lazy iframe mounting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New workspace layout using progressive disclosure: a floating dock,
status bar, hamburger menu, and single-pane content area replace the
3-column resizable layout for a beginner-friendly experience.

- Extract useWorkspaceState hook from NotebookWorkspace (shared state)
- Add FtuxShellProvider context for dock/status bar/tips configuration
- Create 11 FTUX components (Shell, StatusBar, Dock, HamburgerMenu,
  ContentArea, ToolWrappers, DocumentTabBar, NotesPanel, DidYouKnow,
  BreadcrumbStepper, SettingsDialog)
- Add ftuxShellConfig column to preferences (dual schema ADR)
- Add 25 rotating tips across 4 categories
- Add FTUX CSS variables and animation keyframes
- Existing workspace at / remains completely untouched

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Preserved as NotebookWorkspace.original.tsx (978 lines) in case
the useWorkspaceState refactor needs to be reverted.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Transform the FTUX desktop shell from a placeholder skeleton into a functional
guided workspace. Users now choose an output type (Blog Post, Infographic, PRD,
Timeline, Research Paper) and are guided through Gather → Workshop → Build steps
using real workspace components (ContextSidebar, SplitDocumentEditor,
NotebookResearchChat, InterviewTab, ProvoThread, ArtifyPanel, BSChartWorkspace,
TimelineWorkspace).

Key changes:
- Replace Tools/Applications menu with Gather/Workshop/Build taxonomy
- Add landing cards for output-type selection
- Add 3-step guided workflow with breadcrumb stepper and Next/Back nav
- Dock: group separators, optional labels, background color presets
- Status bar: render pinned items, translucency/color controls
- Tips: "Hide this visit" session dismiss, translucency/color
- Settings: color presets, label toggles, translucency sliders for all panels
- Tour modal: 5-step onboarding with replay from settings
- Backward-compatible config parsing (new fields default gracefully)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rails

Layout: Rewrite landing cards as 3-visible carousel with 6th card (Slide
Deck) and shuffle-on-mount. Anchor Did You Know to dock edge. Add dock
clearance padding and z-index fix for step navigation.

Animations: Reduce dock auto-hide delay (2s → 800ms). Add directional
slide transitions on workflow step changes. Improve tip rotation with
slide+fade effect.

Accessibility: Add keyboard navigation (arrow keys) for carousel and tour
modal. Add Escape to dismiss tour. Add aria-labels, aria-current, roles,
and aria-live regions across all interactive FTUX components.

UX guardrails: Confirm before exiting workflow past step 0. Add mobile
fallback badge for hidden pinned status bar items.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants